<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>移动零的位置</title>
</head>

<body>
  <script>
    /*
  第一次遍历数组，将非零元素移动到数组的左侧，并使用一个指针j记录非零元素的位置；
  第二次遍历数组，从非零元素的下一位开始，到数组的末尾，即j~nums.length-1的元素都置为0
    */
    var moveZeroes = function (nums) {
      let j = 0;
      // 第一次遍历数组，将所有非0字符串全部移到数组的最左侧
      for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== 0) {
          nums[j] = nums[i];
          j++;
        }
      }
      // 当数组第一次遍历结束，j在非零元素的下一位
      // 以010312为例，那j为3
      // 将从j开始的元素置为0
      for (let i = j; i <= nums.length - 1; i++) {
        nums[i] = 0;
      }
      return nums;
    };
    console.log(moveZeroes([0, 1, 0, 3, 12]))
  </script>
</body>

</html>